//
//  EBFileUtility.h
//  ENTBoostKit
//
//  Created by zhong zf on 14-7-18.
//
//

@interface EBFileUtility : NSObject

///获取Home路径,沙盒根目录
+ (NSString*)homeDirectory;

/**获取Documents路径
 * 所有的应用程序数据文件写入到这个目录下
 * 这个目录用于存储用户数据或其它应该定期备份的信息
 */
+ (NSString*)documentDirectory;

/**获取Caches路径
 * 用于存放应用程序专用的支持文件
 * 保存应用程序再次启动过程中需要的信息
 */
+ (NSString*)cacheDirectory;

/**获取tmp路径
 * 这个目录用于存放临时文件
 * 保存应用程序再次启动过程中不需要的信息
 */
+ (NSString*)tmpDirectory;

/**生成表情资源文件路径
 * @param fileName 文件名
 * @return 文件路径
 */
+ (NSString*)receivedFilePathWithFileName:(NSString*)fileName;

/**生成表情和头像资源文件名(不包括路径)
 * @param resId 资源ID
 * @param extend 文件扩展名
 * @return 文件名
 */
+ (NSString*)emotionFileNameWithResId:(uint64_t)resId andExtend:(NSString*)extend;

///获取存储表情和头像资源的根路径
+ (NSString*)emotionFilePath;

/**生成表情和头像资源文件路径
 * @param resId 资源ID
 * @param extend 文件扩展名
 * @return 文件路径
 */
+ (NSString*)emotionPathWithResId:(uint64_t)resId andExtend:(NSString*)extend;

/**判断文件是否已存在并可写操作
 * @param path 文件路径
 */
+ (BOOL)isWritableFileAtPath:(NSString*)path;

/**判断文件是否已存在并可读操作
 * @param path 文件路径
 */
+ (BOOL)isReadableFileAtPath:(NSString*)path;

/**以写操作的方式打开一个文件,如果文件不存在，则自动创建
 * @param path 文件路径
 * @return 文件句柄，外部应该用完以后负责关闭
 */
+ (NSFileHandle*)fileHandleForWritingAtPath:(NSString*)path;

/**以读操作的方式打开一个文件
 * @param path 文件路径
 * @return 文件句柄，如果非文件或文件不存在返回nil，外部应该用完以后负责关闭
 */
+ (NSFileHandle*)fileHandleForReadingAtPath:(NSString*)path;

/**获取文件大小
 * @param path 文件路径
 * @return 文件大小(字节数)
 */
+ (uint64_t)fileSizeAtPath:(NSString*)path;

/**写入文件
 * @param path 文件路径
 * @param data 文件数据
 * @return 是否成功
 */
+ (BOOL)writeFileAtPath:(NSString*)path data:(NSData*)data;

/**计算文件内容MD5码
 * @param path 文件路径
 * @return MD5
 */
+ (NSString*)md5AtPath:(NSString*)path;

/**判断指定的MD5与指定的文件MD5是否相等
 * @param md5 指定的MD5，如填入nil则返回NO
 * @param path 文件路径，如文件不存在或不可读则返回NO
 * @return MD5是否相等
 */
+ (BOOL)isEqualWithMD5:(NSString*)md5 atPath:(NSString*)path;

@end
